package 链表;

import java.util.List;

/**
 * https://leetcode-cn.com/leetbook/read/linked-list/f9izv/
 * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
 */
public class 移除链表元素 {
    public class ListNode {
       int val;
       ListNode next;
       ListNode() {}
       ListNode(int val) { this.val = val; }
       ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    public ListNode removeElements(ListNode head, int val) {
        //处理全部都是相同头节点的情况
        while (head!=null && head.val==val){
            head = head.next;
        }

        //处理空的情况
        if(head == null) return head;

        //正常情况
        ListNode newHead = head;

        while (newHead.next!=null){
            if(newHead.next.val == val){
                newHead.next = newHead.next.next;
            }else{
                newHead = newHead.next;
            }
        }
        return head;
    }

}
